home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 147
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin
/
tools
/
rb
/
jlcd100.lzh
/
TNB_FSW
/
TMS062.Lzh
/
TEMTST.c
< prev
next >
Wrap
Text File
|
1994-12-15
|
3KB
|
138 lines
/*
TEMCALL 対応ドライバー用
サンプル&テスター
TEMTST.x
実行中[SHIFT]を押していると文字表示が無くなるので
マウスの動きがスムースになります。
*/
#define RGB(R,G,B) ( ((R)<<6) | ((G)<<11) | ((B)<<1) )
/*** マウスカーソルスプライト設定 ***/
char ca[]={ 3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,
3,2,2,3,0,0,0,0,0,0,0,0,0,0,0,0,
3,2,2,2,3,0,0,0,0,0,0,0,0,0,0,0,
3,2,2,2,2,3,0,0,0,0,0,0,0,0,0,0,
3,2,2,2,2,2,3,0,0,0,0,0,0,0,0,0,
3,2,2,2,2,2,2,3,0,0,0,0,0,0,0,0,
3,2,2,2,2,2,2,2,3,0,0,0,0,0,0,0,
3,2,2,2,2,2,3,3,3,3,0,0,0,0,0,0,
3,2,2,3,3,2,3,0,0,0,0,0,0,0,0,0,
3,2,3,0,3,2,2,3,0,0,0,0,0,0,0,0,
3,3,0,0,3,2,2,3,0,0,0,0,0,0,0,0,
3,0,0,0,0,3,2,2,3,0,0,0,0,0,0,0,
0,0,0,0,0,3,2,2,3,0,0,0,0,0,0,0,
0,0,0,0,0,0,3,3,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
/*** ドライバー有無チェック用 ***/
int de[20];
/*** 各マウス座標記憶 ***/
int X[20],Y[20];
/******************************************************************/
main()
{
int l,i,s,p,b,u,j,m,n,q;
int x,y,xm,ym;
int spp;
screen(1,3,1,0);
cls();
printf("\nTNB製作所 EXTENSION MOUSE CALL TESTER ver 0.50\n");
sp_def(1,ca,1);
SP_ON();
SP_COLOR(3,RGB(31,31,31),1);
SP_COLOR(2,RGB(16,16,16),1);
SP_COLOR(3,RGB(31,31,31),2);
SP_COLOR(2,RGB( 0, 0,31),2);
SP_COLOR(3,RGB(31,31,31),3);
SP_COLOR(2,RGB(31, 0, 0),3);
SP_COLOR(3,RGB(31,31,31),4);
SP_COLOR(2,RGB(31, 0,31),4);
/*--- マウスカーソルを消す ---*/
mouse(4);
mouse(2);
/* IOCSのマウスカーソルはどのマ
ウスでも動いてしまうので別々
のデバイスにより動かすのは不
可能。
*/
/*--- スプライトを見えないところへ ---*/
for(i=0;i<128;i++)
sp_move(i,-16,-16,'NASI');
/*--- まず、TEMCALL対応 ID DRIVER チェック ---*/
for(i=0;i<=12;i++){
de[i]=MS_SEL(0x100+i);
}
/* de[ID]=='TEMC'が入っていれば、
そのIDにはTEMCALL対応のデバイ
スがあるということになります。
*/
/*--- マウスカーソルが乱れているので再設定 ---*/
MS_SEL(0);
/* ほとんどの場合マウスカーソルが
めちゃくちゃになりますので、
必ず設定してください。
*/
/*--- TEMCALL 初期化 ---*/
for(i=0;i<=12;i++){
if ( de[i]=='TEMC' )
MS_LIMIT('TE','MC',0,i);
}
/* メインループ前(つかう前ヤ、コール間隔が極
端に開いた時)に、一度初期化ということで、
コールしておくこと。でないとめちゃくちゃな
データが出ることであろう。
*/
/*--- [ESC]が押されるまでループ ---*/
while( (BITSNS(0)&2)==0 ){
locate(0,3);
foo(0);
foo(1);
foo(2);
foo(3);
foo(4);
foo(10);
foo(11);
foo(12);
}
mouse(0);
}
/*********************************************************************/
void foo(ID)
int ID;
{
int l,i,s,p,b,u,j,m,n,q;
int x,y,xm,ym;
m=de[ID];
n=MS_LIMIT('TE','MC',0,ID);
if ( (BITSNS(0xE)&1)==0 )
printf("ID%2d = %08X [%08X]\n",ID,m,n );
if ( m=='TEMC' ){/*デバイスチェック*/
/*** 個別で座標を管理 ***/
xm=(int)(char)(n>>8);
ym=(int)(char)(n);
if ( xm || ym ){
X[ID]+=xm;
if ( X[ID]<0 ) X[ID]=0;
if ( X[ID]>=512-16 ) X[ID]=512-16-1;
Y[ID]+=ym;
if ( Y[ID]<0 ) Y[ID]=0;
if ( Y[ID]>=512-16 ) Y[ID]=512-16-1;
}
/*** スプライト設定 ***/
i=0x101;
if ( n&0xFF000000 ) i+=0x200;
if ( n&0x00FF0000 ) i+=0x100;
sp_set(ID,16+X[ID],16+Y[ID],i,3);
}
}